/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package application;

import dao.MediaDAOAuteur;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import media.Auteur;
import media.MediaAuteur;
import vue.VueGestionAuteur;

/**
 * Controlleur qui gère les ajout d'artistes aux médias
 * @author Florian Minin & Khémon Beh
 */
public class GestionArtistesController implements ActionListener {

    private VueGestionAuteur vue;
    private MediaDAOAuteur dao;
    private MediaAuteur media;

    public GestionArtistesController(VueGestionAuteur vue, MediaDAOAuteur dao,
            MediaAuteur media) {
        this.vue = vue;
        this.dao = dao;
        this.media = media;
    }

    /**
     * Charge les auteurs dans la vue
     */
    public void chargementDonnees() {
        vue.majListeAuteurs(dao.getListeAuteur(), media);
    }

    /**
     * Traitement des clic sur les boutons de la fenêtre
     * @param ae
     */
    public void actionPerformed(ActionEvent ae) {
        //Clic sur créer un auteur
        if (ae.getActionCommand().equals(VueGestionAuteur.CREER_AUTEUR)) {
            //On récupère l'auteur saisi
            Auteur a = vue.getAuteurSaisi();
            if (a != null) {
                //Si l'auteur n'est pas déja enregistré
                if (!dao.contientAuteur(a)) {
                    //On l'ajoute
                    dao.ajouterAuteur(a);
                    //on rafraichit la table
                    vue.majListeAuteursEnregistres(dao.getListeAuteur());
                }
            }
        }
        //Clic sur le bouton ajouter
        else if (ae.getActionCommand().equals(VueGestionAuteur.AJOUTER)) {
            //On ajoute l'auteur a la liste des auteurs du média
            vue.ajouterAuteurSelectionne();
        //Clic sur le bouton retirer
        } else if (ae.getActionCommand().equals(VueGestionAuteur.RETIRER)) {
            //On retire l'auteur de la liste des auteurs du média
            vue.retirerAuteurSelectionne();
        //Clic sur le bouton enregistrer
        } else if (ae.getActionCommand().equals(VueGestionAuteur.ENREGISTRER)) {
            //On supprime tout les média associé a l'auteur
            media.supprimerAuteurs();
            //On parcourt tout les auteurs de la liste
            for (Object auteur : vue.getAuteursMedia()) {
                //On les ajoute au média
                media.ajouteAuteur((media.Auteur) auteur);
            }
        }
    }
}
